#ifndef CONEXIONSERVER_H_
#define CONEXIONSERVER_H_

#include "ConexionBidireccional.h"
#include "Socket.h"
#include "../../Server/BattleMasterGame.h"
#include "../ProtocoloPlano.h"
#include "Sender.h"

/*
 * @class ConexionServer
 *
 * @brief Representa una conexion con un cliente
 *
 */
class ConexionServer
{
public:
	/**
	* Constructor
	*/
	ConexionServer(SocketProtocoloPlano* socket,BattleMasterGame* game,int listenPort,int broadcastPort,ColaMensajeRecibir* mensajes);

	void addToSend(DTO* dto);

	virtual ~ConexionServer();

	void terminar();

	std::string getClienteId();

	bool isConnected();

protected:
	std::string cliente;

	ConexionBidireccional* conexionACliente;

	ColaMensajeEnviar* enviarACliente;
	ColaMensajeRecibir* colaMensajesServer;

private:
	void handshake(SocketProtocoloPlano* socket,BattleMasterGame* game,int listenPort,int broadcastPort,ColaMensajeEnviar* enviar,ColaMensajeRecibir* recibir);
};

#endif /* CONEXIONSERVER_H_ */
